/*
 * @Author: HeAo
 * @Date: 2022-08-21 22:00:04
 * @LastEditTime: 2022-08-23 10:23:54
 * @LastEditors: HeAo
 * @Description: 
 * @FilePath: \JavaScripe\day-10\06-组合继承.js
 * 别乱动！
 */
/*
继承方法：原型链
继承实例属性：经典继承
*/
// 父构造函数
function Animal(name) {
  this.name = name
  this.categorys = ['cat', 'rabbit']
}
// 父原型对象的方法
Animal.prototype.getAnimalName = function () {
  console.log(this.name + ' getAnimalName');
}
// 子构造函数
function Dog(name, age) {
  this.age = age
  Animal.call(this, name)
}
Dog.prototype = new Animal() //继承
// 子原型对象新增的方法
Dog.prototype.getDogName = function () {
  console.log(this.name + ' getDogName');
}
Object.defineProperty(Dog.prototype, 'constructor', {
  enumerable: false,
  value: Dog
})
var d1 = new Dog('dog', 12)
d1.categorys.push('tigger')
// console.log(d1);
d1.getAnimalName() //dog getAnimalName
d1.getDogName() //dog getDogName

// 检验 d2
var d2 = new Dog('a', 16)
console.log(d2.categorys); //[ 'cat', 'rabbit' ]